package ui;

import java.awt.*;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import control.Operator;
import net.Client;

import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.ActionEvent;

/**
 * 图书管理系统的主界面类
 * 提供图书的增删改查等功能入口
 */
public class FirstUI extends JFrame {

    // 标题面板组件
    private JPanel titlePane = new JPanel();
    // 按钮面板组件
    private JPanel buttonsPane = new JPanel();

    /**
     * 程序入口方法
     * 创建并显示主界面
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    FirstUI frame = new FirstUI();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * 构造函数
     * 初始化窗口属性和内容
     */
    public FirstUI() {
        super("图书管理系统");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(400, 200, 550, 400);
        content();

        // 添加窗口关闭监听器，向服务器发送退出指令
        addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent we){
                Client.write("0\n");
            }
        });
    }

    /**
     * 设置界面内容的方法
     * 包括标题和功能按钮的布局与事件处理
     */
    private void content() {
        // 标题面板设置
        titlePane.setBorder(new EmptyBorder(30, 20, 30, 20));
        titlePane.setLayout(new BorderLayout());
        // 设置背景为透明
        getContentPane().setBackground(new Color(0, 0, 0, 0)); // 完全透明
        titlePane.setOpaque(false); // 设置面板为透明
        buttonsPane.setOpaque(false); // 设置面板为透明


        JLabel labelTitle = new JLabel("欢迎来到图书管理系统！");
        labelTitle.setFont(new Font("微软雅黑", Font.BOLD, 24));
        labelTitle.setHorizontalAlignment(JLabel.CENTER);
        titlePane.add(labelTitle, BorderLayout.CENTER);
        getContentPane().add(titlePane, BorderLayout.NORTH);

        // 按钮面板设置
        buttonsPane.setBorder(new EmptyBorder(20, 80, 20, 80));
        buttonsPane.setLayout(new GridLayout(5, 1, 0, 15)); // 5行1列，垂直间距15像素

        // 创建功能按钮
        JButton buttonadd = new JButton("增加图书");
        JButton buttondel = new JButton("删除图书");
        JButton buttonalt = new JButton("修改图书");
        JButton buttonfnd = new JButton("查询图书");
        JButton buttonprt = new JButton("打印书单");

        // 统一设置按钮样式
        Font buttonFont = new Font("微软雅黑", Font.PLAIN, 16);
        JButton[] buttons = {buttonadd, buttondel, buttonalt, buttonfnd, buttonprt};

        for (JButton button : buttons) {
            button.setFont(buttonFont);
            button.setPreferredSize(new Dimension(200, 45));
            buttonsPane.add(button);
        }

        getContentPane().add(buttonsPane, BorderLayout.CENTER);

        // 为各个按钮添加事件监听器

        // 增加图书按钮事件处理
        buttonadd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                AddBookUI addbookui = new AddBookUI();
                addbookui.setVisible(true);
            }
        });

        // 删除图书按钮事件处理
        buttondel.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                DelBookUI delbookui = new DelBookUI();
                delbookui.setVisible(true);
            }
        });

        // 修改图书按钮事件处理
        buttonalt.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                AltBookUI altbookui = new AltBookUI();
                altbookui.setVisible(true);
            }
        });

        // 查询图书按钮事件处理
        buttonfnd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                FndBookUI selbookui = new FndBookUI();
                selbookui.setVisible(true);
            }
        });

        // 打印书单按钮事件处理
        buttonprt.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Operator operator = new Operator();
                String[][] booklist = operator.prtAllBook();
                BookListUI booklistui = new BookListUI(booklist);
                booklistui.setVisible(true);
            }
        });
    }
}
